#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <fstream>
#include <string>

#include "../util/definitions.h"

#include "../FileShare.h"
#include "../OnlineUsers.h"
#include "../SharedFileList.h"


#define SEMAFORO_ARCH "tmp/semaforo.tmp"
#define SEMAFORO_LETRA 'a'


void crearArchivos()
{
	std::fstream f;
	f.open(SEMAFORO_ARCH, std::ios::out);
	f.close();
}

int main () {

	crearArchivos();

	int pid = fork ();

	if ( pid == 0 ) {

		std::cout<<"Hijo: duermo"<<std::endl;
		sleep(10);

		std::cout<<"Hijo: despierto"<<std::endl;
		FileShare shared(getpid());

		SharedFileList list;

		return shared.getAllSharedFiles(list);

	} else {

		std::cout<<"Padre: empiezo"<<std::endl;
		std::string file = SEMAFORO_ARCH;

		FileShare shared(getpid());
		OnlineUsers userManager;

		userManager.logIn(getpid());
		shared.shareFile(file);

		int status = 0;

		/* espero a que terminen los procesos hijos */
		waitpid(pid, &status,0);

		userManager.logOut(getpid());

		//remove(ONLINE_USERS_FILE);	//por ahora :)


		return 0;
	}
	return 0;
}
